gdb 自定义脚本命令语法简单介绍 您所在的位置:网站首页 gdb 数组 gdb 自定义脚本命令语法简单介绍

gdb 自定义脚本命令语法简单介绍

2023-08-17 04:35| 来源: 网络整理| 查看: 265

1. # 为脚本注释命令 2. 赋值语句:set,

set 命令很强大,

a.它可以是设置gdb 的选项, 例如:

set confirm off set verbose off set history filename ~/.gdb_history set history save set output-radix 0x10 set input-radix 0x10

set 选项可以用show 命令来查看设置效果

b. set 可以自定义变量,变量以$开始,以便区分是gdb还是调试程序变量。   变量可为全局或局部,视声明位置。  例如:     set $x = 1;

set $SHOW_CONTEXT = 1 set $SHOW_NEST_INSN = 0 set $CONTEXTSIZE_STACK = 6 set $CONTEXTSIZE_DATA  = 8 set $CONTEXTSIZE_CODE  = 8 set $data_addr = 0x400000

set 自定义变量的效果可以用 p 命令来检查

b.2: set 可以直接引用程序地址,计算代码数据位置,直接引用寄存器,可以打印,修改代码和数据

     访问内容数据

   set $_byte1 = *(unsigned char *)$pc         set $_byte2 = *(unsigned char *)($pc+1)         set $_byte3 = *(unsigned char *)($pc+2)

修改内存

        set *(unsigned char *)$addr = 0x90

访问寄存器:反过来就是修改i寄存器

                set $oldeax = $eax                 set $oldebx = $ebx                 set $oldecx = $ecx                 set $oldedx = $edx                 set $oldesi = $esi                 set $oldedi = $edi                 set $oldebp = $ebp                 set $oldesp = $esp

 

自动设置断点: set $_nextaddress = $pc + 0x3 thbreak *$_nextaddress

set 访问用户程序资源的特性使得它可以监视和控制用户程序,这就是debug的核心所在.

再赋予流程控制,就是脚本语言.

3. 函数声明语句:define .. end 语句

具有一定功能的语句块为函数,目的是重用代码和结构化(就是把功能细分的意思)   define func   end   无行参声明,但可以直接用$arg1,$arg2引用, $argc 为形参个数 4. 显示语句: echo 5. 显示语句: printf 6. 条件语句: if..else..end 7. 循环语句: while .. end 8. 说明(帮助)语句: document.. end   为函数书写帮助说明 9. 常规的gdb 调试命令语句。 10. 支持shell 命令, 可以实现dump, search 等复杂功能 ---------------------------------------- 自定义 GDB 内存查找 ------------------------------------

define search     set $start = (char *) $arg0     set $end = (char *) $arg1     set $pattern = (short) $arg2     set $p = $start     while $p < $end         if (*(short *) $p) == $pattern             printf "pattern 0x%hx found at 0x%x\n", $pattern, $p         end         set $p++     end end document search Syntax: search | Search for the given pattern beetween $start and $end address. end

 

注意: gdb中使用的变量要加上'$'符号,否则会认为是被调试的程序中的变量

自定义的gdb命令脚本文件,可以用source 命令来导入。

由这几条简单语句已经勾勒出了脚本语言的概貌,可以与计算机交互了! 沟通愉快!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有